#导入MethodType模块用来给对象添加类中没有的行为
from types import MethodType
class Person:
# 类属性
    s=0
#构造函数，创建对象时，自动执行生成实例属性
    def __init__(self,duixiang,nianling):
        self.name=duixiang
        self.age=nianling
        Person.s+=nianling
#实例方法，就是对象调用的方法
    def eat(self):
        print("eat")
#创建对象
set=Person('zhangsan',19)
print(set.name)
print(set.age)
print(set.age)

# 对象中要新增的行为
def mas(self):
    print("我要吃饭")
#用MethodType，把新增的函数mas添加到set这个对象里，并用abc命名
set.abc=MethodType(mas,set)
#调用刚才新添加的行为
set.abc()
met=Person('lisi',15)


class Person1:
# 类属性
    s=0
    def __init__(self,duixiang,nianling):
# 实际属性，用双下划线设置权限
        self.__name=duixiang
        self.age=nianling
#实际方法,隐私属性__name的接口
    def est(self,new):
        self.__name=new
        print(self.__name)
#静态方法的标志
    @staticmethod
    def static(x,y):
        print(x+y)
#类方法的标志，类方法，用于访问、修改类属性，类与对象都可调用
    @classmethod
    def eat(cls,name):
        cls.s=name
person1=Person1('zhangsan',19)
#用接口修改隐私属性的内容
person1.est('li')
#给对象新建一个属性
person1.name='wangwu'
#修改类属性
Person1.eat(2)
print(Person1.s)
#修改设置双下划线的属性
person1._Person1__name='lisi'
print(person1._Person1__name)
#查看对象中所有的属性，但只能查看和self绑定的属性
print(person1.__dict__)